package org.jobtask.ui;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JSplitPane;

import org.jobtask.iface.ControlListener;
import org.jobtask.listener.Monitor;
import org.jobtask.schedule.Nurse;
/**
 * @category JobTask 
 * @version 1.2
 * @author 张波 Bob
 * @Description
 * <p>
 * <b>CommonComponents</b>中的组件都是零件,相互之间没有组合在一起,
 * 本类的主要作用就是将所有的组件组织到界面上合适的位置,然后给需要添加
 * 监听器的组件设置监听,最后等所有的界面元素初始化完成以后,启动应用界面,
 * 在屏幕上显示程序界面
 * </p>
 *
 */
public class ControlPanel {
	

	/**
	 * 
	 * @param listener
	 * 监听器对象
	 * @param compnoes
	 * 组件集对象
	 * @Description
	 * 此方法主要就是组织界面元素,给组件添加监听器,然后显示界面到屏幕
	 */
	public ControlPanel(ControlListener listener, CommonComponents compnoes){
		compnoes.getWin().setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		compnoes.getWin().addWindowListener(listener);
		Container stock=compnoes.getWin().getContentPane();
		stock.add(new StatusBar(compnoes,listener),BorderLayout.PAGE_END);
		compnoes.getText().addMouseMotionListener(listener);
		compnoes.getText().addMouseListener(listener);
		compnoes.getAddTaskBut().addActionListener(listener);
		compnoes.getDelTaskBut().addActionListener(listener);
		compnoes.getAddGoupBut().addActionListener(listener);
		compnoes.getDelGoupBut().addActionListener(listener);
		compnoes.getTaskList().addListSelectionListener(listener);
		compnoes.getTaskList().addMouseListener(listener);
		compnoes.getTaskGroupList().addMouseListener(listener);
		compnoes.getTaskGroupList().addListSelectionListener(listener);
		compnoes.getCtrlBut().addActionListener(listener);
		compnoes.getClearBut().addActionListener(listener);
		stock.add(this.initMainPanel(listener,compnoes));
		this.initTaskPopupMenu(listener, compnoes);
		compnoes.getWin().setSize(1000,660);
		compnoes.getWin().setLocationRelativeTo(null);
		compnoes.getWin().setVisible(true);
	}
	
	/**
	 * @param listener 监听器对象
	 * @param compnoes 组件集对象
	 * @return
	 * 返回主面板
	 * @Description
	 * 构建程序主面板,主面板分为左右两个部分,左边是任务列表栏,右边是任务日志区.
	 */
	private JSplitPane initMainPanel(ControlListener listener,CommonComponents compnoes){
		final JSplitPane pane=new JSplitPane();
		pane.setDividerLocation(260);
		pane.setDividerSize(5);
		pane.setOneTouchExpandable(true);
		pane.setLeftComponent(new TaskListPanel(compnoes));
		pane.setRightComponent(new MonitorPanel(compnoes));
		return pane;
	}
	
	/**
	 * @param listener 监听器对象
	 * @param compnoes 组件集对象
	 * @Description
	 * 构建右键菜单,这个右键菜单只有任务列表可用,界面其他部分没有右键菜单
	 */
	private void initTaskPopupMenu(ControlListener listener, CommonComponents compnoes){
		compnoes.getNewMenu().addActionListener(listener);
		compnoes.getNewMenu().setActionCommand("newMenu");
		compnoes.getModifyMenu().addActionListener(listener);
		compnoes.getModifyMenu().setActionCommand("modifyMenu");
		compnoes.getRemoveMenu().addActionListener(listener);
		compnoes.getRemoveMenu().setActionCommand("removeMenu");
		compnoes.getSelectAll().addActionListener(listener);
		compnoes.getSelectAll().setActionCommand("selectall");
		compnoes.getTaskPopupMenu().add(compnoes.getSelectAll());
		compnoes.getTaskPopupMenu().add(compnoes.getNewMenu());
		compnoes.getTaskPopupMenu().add(compnoes.getModifyMenu());
		compnoes.getTaskPopupMenu().add(compnoes.getRemoveMenu());
		compnoes.getTaskPopupMenu().add(compnoes.getMoveToMenu());
	}
	
	
}
